package com.xushuda.yas.storage;

import java.io.IOException;
import java.util.Comparator;
import java.util.SortedMap;

/**
 * the abstract permSlice which relies on the underlying file system use the bloom filter to accelerate query
 * 
 * @author xushuda
 *
 */
public abstract class PermSlice implements IdxStorage {

    // block大小
    protected int blockSize;
    // comparator
    protected Comparator<String> cmp;

    public PermSlice(Comparator<String> cmp) throws IOException {
        this.cmp = cmp;
    }

    /**
     * 这个操作必须是线程安全的，因为这个操作将会在另外一个线程中被调用 将memory中map的数据dump到disk上面 这个调用会阻塞当前的线程，所以应该新开一个线程来处理
     * 这个操作完成后，需要重建log文件，以加速后续的操作（但是注意容灾与备份）
     * 
     * @param IdxStorage
     * @throws IOException
     */
    public abstract void dump(SortedMap<String, SeqData> dataSet) throws IOException;

    /**
     * 获取最大的版本号, 子类要能获取当前已经在磁盘上的最大版本号
     * 
     * @return
     */
    public abstract long getMaxSeqNo();
}
